#pragma once

#include "guildservicebasic.service.GuildServiceBasic.h"

class GuildServiceBasicImpl : public GuildServiceBasic {
public:
//implementation->
    GuildServiceBasicImpl();
    virtual ~GuildServiceBasicImpl();
    virtual bool onAfterFork(rpc::Rpc* rpc) override;
    virtual bool onBeforeDestory(rpc::Rpc* rpc) override;
    virtual void onTick(std::time_t ms) override;
    virtual void onServiceCall(rpc::StubCallPtr callPtr) override;
    virtual std::shared_ptr<CreateGuildRes> CreateGuild(rpc::StubCallPtr call, const CreateGuildArg&) override;
    virtual std::shared_ptr<ApplyJoinGuildRes> ApplyJoinGuild(rpc::StubCallPtr call, const ApplyJoinGuildArg&) override;
    virtual std::shared_ptr<KickOutGuildMemberRes> KickOutGuildMember(rpc::StubCallPtr call, const KickOutGuildMemberArg&) override;
    virtual std::shared_ptr<QuitGuildRes> QuitGuild(rpc::StubCallPtr call, const QuitGuildArg&) override;
    virtual std::shared_ptr<SetAutoApprovalRes> SetAutoApproval(rpc::StubCallPtr call, const SetAutoApprovalArg&) override;
    virtual std::shared_ptr<ChangeGuildIconIdRes> ChangeGuildIconId(rpc::StubCallPtr call, const ChangeGuildIconIdArg&) override;
    virtual std::shared_ptr<ChangeGuildNameRes> ChangeGuildName(rpc::StubCallPtr call, const ChangeGuildNameArg&) override;
    virtual std::shared_ptr<ChangeGuildDeclarationRes> ChangeGuildDeclaration(rpc::StubCallPtr call, const ChangeGuildDeclarationArg&) override;
    virtual std::shared_ptr<ChangeGuildAnnounceRes> ChangeGuildAnnounce(rpc::StubCallPtr call, const ChangeGuildAnnounceArg&) override;
    virtual std::shared_ptr<ApproveJoinGuildRes> ApproveJoinGuild(rpc::StubCallPtr call, const ApproveJoinGuildArg&) override;
    virtual std::shared_ptr<SetGuildMemberDutyRes> SetGuildMemberDuty(rpc::StubCallPtr call, const SetGuildMemberDutyArg&) override;
    virtual std::shared_ptr<LoginRes> Login(rpc::StubCallPtr call, const LoginArg&) override;
    virtual void Logout(rpc::StubCallPtr call, const LogoutNtfData&) override;
    virtual std::shared_ptr<GiveGuildItemRes> GiveGuildItem(rpc::StubCallPtr call, const GiveGuildItemArg&) override;
//implementation<-
};

